import { createRouter, createWebHistory } from 'vue-router'
import { useUserStore } from '@/stores/user'

const router = createRouter({
  history: createWebHistory(import.meta.env.BASE_URL),
  routes: [
    {
      path: '/',
      name: 'home',
      component: () => import('@/views/Home.vue'),
      meta: { requiresAuth: true } // 需要登录
    },
    {
      path: '/login',
      name: 'login',
      component: () => import('@/views/Login.vue'),
      meta: { requiresAuth: false } // 不需要登录
    },
    // 添加登录成功回调页（复用Login组件处理回调逻辑）
    {
      path: '/login-success',
      name: 'login-success',
      component: () => import('@/views/Login.vue'),
      meta: { requiresAuth: false } // 不需要登录
    }
  ],
})

// 路由守卫
router.beforeEach((to, from, next) => {
  // 如果是登录成功回调页面（匹配所有以/login-success开头的URL），不需要验证
  // 直接放行，让 login-success.vue 组件来处理回调并保存 token，然后由组件内部跳转
  if (to.path.startsWith('/login-success')) {
    next()
    return
  }
  
  // 如果需要登录验证
  if (to.meta.requiresAuth) {
    const userStore = useUserStore()
    // 先同步一次localStorage，确保获取最新状态
    userStore.syncFromStorage()
    
    // 从localStorage实时读取token（更可靠）
    const token = localStorage.getItem('token')
    if (token && token.trim() !== '') {
      // 确保store中的token也同步
      if (userStore.token !== token) {
        userStore.token = token
      }
      // 已登录，允许访问
      next()
    } else {
      // 未登录，清除store中的token
      if (userStore.token) {
        userStore.clearUserInfo()
      }
      // 跳转到登录页
      next('/login')
    }
  } else {
    // 不需要登录验证，直接访问
    next()
  }
})

export default router
